package com.letv.business.flow.album.listener;

/**
 * 点播会员相关layout 对外提供的接口
 * 
 * @author zhuqiao
 *
 */
public interface AlbumVipTrailListener {

    /**
     * 错误状态
     * 
     * @author zhuqiao
     *
     */
    enum VipTrailErrorState {
        INIT,
        /** 已登录，试看开始 **/
        START_WITH_LOGIN,
        /** 未登录，试看开始 **/
        START_WITH_NOT_LOGIN,
        /** 有观影券，试看开始 **/
        START_WITH_TICKET,
        /** 无观影券，试看开始 **/
        START_WITH_NOT_TICKET,
        /** 已登录，试看结束 **/
        END_WITH_LOGIN,
        /** 未登录，试看结束 **/
        END_WITH_NOT_LOGIN,
        /** 有观影券，试看结束 **/
        END_WITH_TICKET,
        /** 无观影券，试看结束 **/
        END_WITH_NOT_TICKET,
        /** 封禁 **/
        FORBIDDEN
    }

    // /**
    // * 试看开始.内部判断UI状态
    // */
    // public void vipTrailStart();

    /**
     * 试看开始，根据登录状态调整UI
     * 
     * @param hasLogined 用户是否已登录
     */
    void setStateForStartByHasLogined(boolean hasLogined);

    /**
     * 试看开始，根据观影券状态调整UI
     * 
     * @param hasTicket 是否有观影券
     */
    void setStateForStartByHasTicket(boolean hasTicket);

    // /**
    // * 试看结束
    // */
    // public void vipTrailEnd();

    /**
     * 试看结束，根据登录状态调整UI
     * 
     * @param hasLogined 用户是否已登录
     */
    void vipTrailEndByHasLogined(boolean hasLogined);

    /**
     * 试看结束，根据观影券状态调整UI
     * 
     * @param hasTicket 是否有观影券
     */
    void vipTrailEndByHasTicket(boolean hasTicket);

    /**
     * 试看结束 显示返回键、标题、半屏全屏切换
     * 
     * @param title
     * @param isLandScreen
     * @param isDolby
     */
    void vipTrailBackTitleScreenProcess(String title, boolean isDolby);

    /**
     * 成功使用观影券，可以正常观看了！
     */
    void vipTrailUseTicketSuccess();

    /**
     * 是否有错误.当返回true时不应出现控制栏
     * 
     * @return
     */
    boolean isError();

    /**
     * 隐藏布局
     */
    void hide();

    void finish();

    /**
     * 获取错误状态
     * 
     * @return
     */
    VipTrailErrorState getErrState();

    /**
     * 试看是否已经结束
     * 
     * @return
     */
    boolean isVipTrailEnd();

    /**
     * 设置计费类型
     * 
     * @param chargetype 0:点播;1:点播且包月;2:包月
     */
    void setChargetype(int chargetype);

    /**
     * 设置观影券数量
     * 
     * @param ticketSize
     */
    void setTicketSize(int ticketSize);

    /**
     * 检查免费试看是否是结束试看状态
     * 
     * @return
     */
    boolean checkVipTrailIsStateEnd();

    /**
     * 是否是收费视频
     *
     * @return
     */
    boolean isVipVideo();

    /**
     * 与controller同步显示状态
     * 
     * @param show
     */
    void setVisibileWithController(boolean show);

    /**
     * 封禁
     */
    void forbidden();
}
